package interfaces;

import java.nio.channels.SocketChannel;

public interface IManagerProxy {

	/**
	 * Metodo responsavel por enviar o status do worker
	 */
	void statusSend(String workerId, float capacity, int workload );
	
	/**
	 * Metodo responsavel por enviar o resultado do job ao gerente
	 */
	void resultSend(String workerId, String jobId, byte[] jobResultDesc);
	
	/**
	 * Metodo responsavel por enviar mensagem de BOSS_CONTACT
	 */
	void bossContactSend();
	
	/**
	 * Metodo responsavel por enviar mensagem NEW_JOB
	 * @param job
	 * @param workerId
	 */
	void newJobSend(IJob job, String workerId);
	
	/**
	 * Cria um canal de comunicacao com o gerente
	 * @param channelDesc
	 */
	void workerConnect(String workerId, String channelDesc);
	
	/**
	 * Metodo responsavel por retornar o socket de um trabalhador
	 * 
	 * @param workerId
	 * @return
	 */
	SocketChannel getWorkerSocket(String workerId);
}
